package org.lc.stk.dao.course;

import java.util.List;
import java.util.Optional;

import org.lc.stk.model.course.Course;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

/**
 * 课程数据访问接口
 */
@Repository
public interface CourseRepository extends JpaRepository<Course, Integer>, JpaSpecificationExecutor<Course> {
    // 根据课程代码查找课程
    Optional<Course> findByCode(String code);
    
    // 根据课程名称模糊查询
    Page<Course> findByNameContaining(String name, Pageable pageable);
    
    // 根据系部ID查询课程列表
    List<Course> findByDepartmentId(Long departmentId);
    
    // 检查课程代码是否存在
    boolean existsByCode(String code);

    // 检查课程名称是否存在
    boolean existsByName(String name);
}